Test.createTestingModule() supports .overrideProvider() to swap any provider after the module definition — including providers from imported modules you do not control. This is cleaner than reconstructing the full provider list because you import the real module graph and surgically override only what is needed.
overrideProvider() works on the compiled module — can replace providers from deeply imported modules.
useValue in providers — only replaces providers declared in the test module itself.
Chain multiple .overrideProvider() calls — each call targets a different token.
Also supports .overrideProvider(Token).useClass(MockClass) and .useFactory(fn).